#ifndef _AIP8563_BOARD_H_
#define _AIP8563_BOARD_H_

#include <config.h>
#include <stdbool.h>
#include "timestamp.h"

#if _REAL_TIME_CLOCK_SOURCE_ == _EXTERNAL_CLOCK_SOURCE_

/* 定义相关通讯管脚 */
#if _BOARD_TYPE_ == _6681_A_BOARD_
// SCL 驱动管脚
#define AIP8563_IIC_SCL_PIN                      GPIO_Pin_18
// SDA 驱动管脚
#define AIP8563_IIC_SDA_PIN                      GPIO_Pin_19

#elif _BOARD_TYPE_ == _6681_B_BOARD_
// SCL 驱动管脚
#define AIP8563_IIC_SCL_PIN                      GPIO_Pin_23
// SDA 驱动管脚
#define AIP8563_IIC_SDA_PIN                      GPIO_Pin_0

#elif _BOARD_TYPE_ == _M157_A_BOARD_
// SCL 驱动管脚
#define AIP8563_IIC_SCL_PIN                      GPIO_Pin_18
// SDA 驱动管脚
#define AIP8563_IIC_SDA_PIN                      GPIO_Pin_19

#elif _BOARD_TYPE_ == _9905_A_BOARD_
// SCL 驱动管脚
#define AIP8563_IIC_SCL_PIN                      GPIO_Pin_5
// SDA 驱动管脚
#define AIP8563_IIC_SDA_PIN                      GPIO_Pin_4
#endif

/**
 * @brief 延时函数
 *
 * @param Us - 延时时间
 */
extern void Aip8563DelayUs(uint32_t Us);

/**
 * @brief 获取 SDA 数据线管脚电平状态
 *
 * @return bool - 管脚电平状态（true：高电平 false：低电平）
 */
extern bool Aip8563GetSdaPinLevel(void);

/**
 * @brief 设置SDA数据线管脚电平状态
 *
 * @param PinLevel - 管脚电平（true：高电平 false：低电平）
 */
extern void Aip8563SetSdaPinLevel(bool PinLevel);

/**
 * @brief 设置SCL时间线管脚电平状态
 *
 * @param PinLevel - 管脚电平（true：高电平 false：低电平）
 */
extern void Aip8563SetSclPinLevel(bool PinLevel);

/**
 * @brief 将SDA设置为输入模式
 *
 */
extern void Aip8563ConfigurationSdaInput(void);

/**
 * @brief 将SDA设置为输出模式
 *
 */
extern void Aip8563ConfigurationSdaOutput(void);

/**
 * @brief 板载功能初始化
 *
 */
extern void Aip8563BoardInitialisation(void);

#endif
#endif
 